package demo;

import demo.hardware.impl.Cpu;
import demo.hardware.impl.Disk;
import demo.software.UpdateSoftware;

/**
 * 访问者模式
 * 用于封装一些用于于某种数据结构中的各元素操作，
 * 它可以在不改变数据结构的前提下定义作用于这些元素的新的操作
 * @author ZhouWeiBo
 * @create 2022/6/8
 */
public class App {
    public static void main(String[] args) {
        Cpu cpu = new Cpu("1+1=1");
        Disk disk = new Disk("记住：1+1=1");
        MyRobot myRobot = new MyRobot(cpu,disk);
        myRobot.calc();
        System.out.println("这机器人傻了，我得给它系统升级下！");

        UpdateSoftware v1 = new UpdateSoftware();
        Cpu newCpu = new Cpu("1+1=2");
        Disk newDisk = new Disk("记住：1+1=2");
        v1.visitCpu(newCpu);
        v1.visitDisk(newDisk);
        myRobot.updateSystem(v1);
        myRobot.calc();

    }
}
